package com.je.app.view;

import java.awt.Dimension;

import javax.swing.JPanel;
import javax.swing.JSeparator;

import java.awt.Color;

import javax.swing.JLabel;

import java.awt.Font;

import javax.swing.DefaultComboBoxModel;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTextField;

import com.je.app.control.ControlSesion;

import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import com.toedter.calendar.JDateChooser;

import javax.swing.JComboBox;
import javax.swing.ComboBoxModel;
import javax.swing.JButton;

import java.awt.SystemColor;

import javax.swing.UIManager;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Sesiones extends JPanel{
	private JTable tablaTurnos;
	private JTable tablaIngresos;
	private JTable tablaEgresos;
	private JTextField textFieldTotalIngresos;
	private JTextField textFieldTotalEgresos;
	private JTextField txtSesiones;
	private JTextField txtTurnos;
	private JTextField textField;
	private JTable tablaSesiones;
	private JDateChooser dateChooser;
	private JComboBox<String> comboUsuarios;
	
	public Sesiones(Object[][] matrizSesiones, String [] listaUsuarios) {
		
		setSize(new Dimension(1024, 771));
		setLayout(null);
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setOrientation(SwingConstants.VERTICAL);
		separator_1.setForeground(Color.LIGHT_GRAY);
		separator_1.setBounds(28, 63, 1, 619);
		add(separator_1);
		
		JSeparator separator_3 = new JSeparator();
		separator_3.setOrientation(SwingConstants.VERTICAL);
		separator_3.setForeground(Color.LIGHT_GRAY);
		separator_3.setBounds(499, 63, 1, 619);
		add(separator_3);
		
		JSeparator separator_4 = new JSeparator();
		separator_4.setForeground(Color.LIGHT_GRAY);
		separator_4.setBounds(28, 681, 472, 1);
		add(separator_4);
		
		JSeparator separator_5 = new JSeparator();
		separator_5.setForeground(Color.LIGHT_GRAY);
		separator_5.setBounds(522, 63, 40, 1);
		add(separator_5);
		
		JLabel lblIngresos = new JLabel("Ingresos");
		lblIngresos.setHorizontalAlignment(SwingConstants.CENTER);
		lblIngresos.setFont(new Font("Tahoma", Font.PLAIN, 16));
		lblIngresos.setBounds(559, 54, 81, 21);
		add(lblIngresos);
		
		JSeparator separator_6 = new JSeparator();
		separator_6.setOrientation(SwingConstants.VERTICAL);
		separator_6.setForeground(Color.LIGHT_GRAY);
		separator_6.setBounds(522, 63, 1, 161);
		add(separator_6);
		
		JSeparator separator_8 = new JSeparator();
		separator_8.setOrientation(SwingConstants.VERTICAL);
		separator_8.setForeground(Color.LIGHT_GRAY);
		separator_8.setBounds(992, 63, 1, 161);
		add(separator_8);
		
		JSeparator separator_9 = new JSeparator();
		separator_9.setForeground(Color.LIGHT_GRAY);
		separator_9.setBounds(522, 223, 471, 1);
		add(separator_9);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setName("turnos");
		scrollPane.setBounds(540, 520, 431, 147);
		add(scrollPane);
		
		tablaTurnos = new JTable();
		scrollPane.setViewportView(tablaTurnos);
		tablaTurnos.setModel(new DefaultTableModel(
			null,
			new String[] {
				"Habitaci\u00F3n", "Entrada", "Salida", "Consumici\u00F3n", "Monto turno", "Total"
			}
		) {
			boolean[] columnEditables = new boolean[] {
				false, false, false, false, false, false, false
			};
			public boolean isCellEditable(int row, int column) {
				return columnEditables[column];
			}
		});
		DefaultTableCellRenderer modelocentrar = new DefaultTableCellRenderer();
		DefaultTableCellRenderer modeloderecha = new DefaultTableCellRenderer();
		modelocentrar.setHorizontalAlignment(SwingConstants.CENTER);
		modeloderecha.setHorizontalAlignment(SwingConstants.RIGHT);
		
		tablaTurnos.getColumnModel().getColumn(0).setResizable(false);
		tablaTurnos.getColumnModel().getColumn(0).setMinWidth(63);
		tablaTurnos.getColumnModel().getColumn(0).setCellRenderer(modelocentrar);
		tablaTurnos.getColumnModel().getColumn(1).setResizable(false);
		tablaTurnos.getColumnModel().getColumn(1).setMinWidth(45);
		tablaTurnos.getColumnModel().getColumn(1).setCellRenderer(modelocentrar);
		tablaTurnos.getColumnModel().getColumn(2).setResizable(false);
		tablaTurnos.getColumnModel().getColumn(2).setMinWidth(45);
		tablaTurnos.getColumnModel().getColumn(2).setCellRenderer(modelocentrar);
		tablaTurnos.getColumnModel().getColumn(3).setResizable(false);
		tablaTurnos.getColumnModel().getColumn(3).setMinWidth(70);
		tablaTurnos.getColumnModel().getColumn(3).setCellRenderer(modeloderecha);
		tablaTurnos.getColumnModel().getColumn(4).setCellRenderer(modeloderecha);
		tablaTurnos.getColumnModel().getColumn(5).setCellRenderer(modeloderecha);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setName("ingresos");
		scrollPane_1.setBounds(540, 81, 431, 123);
		add(scrollPane_1);
		
		tablaIngresos = new JTable();
		scrollPane_1.setViewportView(tablaIngresos);
		tablaIngresos.setModel(new DefaultTableModel(null,new String[] {"Detalle", "Importe"}) {
			
			public boolean isCellEditable(int row, int column) {
				return false;
		}});
		tablaIngresos.getColumnModel().getColumn(0).setPreferredWidth(150);
		tablaIngresos.getColumnModel().getColumn(1).setPreferredWidth(30);
		tablaIngresos.getColumnModel().getColumn(1).setCellRenderer(modeloderecha);
		JSeparator separator_10 = new JSeparator();
		separator_10.setForeground(Color.LIGHT_GRAY);
		separator_10.setBounds(522, 280, 40, 1);
		add(separator_10);
		
		JLabel lblEgresos = new JLabel("Egresos");
		lblEgresos.setHorizontalAlignment(SwingConstants.CENTER);
		lblEgresos.setFont(new Font("Tahoma", Font.PLAIN, 16));
		lblEgresos.setBounds(559, 272, 81, 21);
		add(lblEgresos);
		
		JSeparator separator_11 = new JSeparator();
		separator_11.setOrientation(SwingConstants.VERTICAL);
		separator_11.setForeground(Color.LIGHT_GRAY);
		separator_11.setBounds(522, 280, 1, 163);
		add(separator_11);
		
		JSeparator separator_12 = new JSeparator();
		separator_12.setForeground(Color.LIGHT_GRAY);
		separator_12.setBounds(639, 280, 354, 1);
		add(separator_12);
		
		JSeparator separator_13 = new JSeparator();
		separator_13.setOrientation(SwingConstants.VERTICAL);
		separator_13.setForeground(Color.LIGHT_GRAY);
		separator_13.setBounds(992, 280, 1, 163);
		add(separator_13);
		
		JSeparator separator_14 = new JSeparator();
		separator_14.setForeground(Color.LIGHT_GRAY);
		separator_14.setBounds(522, 442, 471, 1);
		add(separator_14);
		
		JLabel lblTotalIngresos = new JLabel("Total Ingresos:   $");
		lblTotalIngresos.setVerticalAlignment(SwingConstants.TOP);
		lblTotalIngresos.setHorizontalAlignment(SwingConstants.RIGHT);
		lblTotalIngresos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblTotalIngresos.setBounds(817, 240, 112, 26);
		add(lblTotalIngresos);
		
		textFieldTotalIngresos = new JTextField();
		textFieldTotalIngresos.setName("totalIngresos");
		textFieldTotalIngresos.setHorizontalAlignment(SwingConstants.CENTER);
		textFieldTotalIngresos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		textFieldTotalIngresos.setEditable(false);
		textFieldTotalIngresos.setColumns(10);
		textFieldTotalIngresos.setBounds(915, 235, 78, 26);
		add(textFieldTotalIngresos);
		
		JLabel lblTotalEgresos = new JLabel("Total Egresos:   $");
		lblTotalEgresos.setVerticalAlignment(SwingConstants.TOP);
		lblTotalEgresos.setHorizontalAlignment(SwingConstants.RIGHT);
		lblTotalEgresos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblTotalEgresos.setBounds(817, 459, 112, 26);
		add(lblTotalEgresos);
		
		textFieldTotalEgresos = new JTextField();
		textFieldTotalEgresos.setName("totalEgresos");
		textFieldTotalEgresos.setHorizontalAlignment(SwingConstants.CENTER);
		textFieldTotalEgresos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		textFieldTotalEgresos.setEditable(false);
		textFieldTotalEgresos.setColumns(10);
		textFieldTotalEgresos.setBounds(915, 454, 78, 26);
		add(textFieldTotalEgresos);
		
		JScrollPane scrollPane_2 = new JScrollPane();
		scrollPane_2.setName("egresos");
		scrollPane_2.setBounds(540, 298, 431, 123);
		add(scrollPane_2);
		
		tablaEgresos = new JTable();
		scrollPane_2.setViewportView(tablaEgresos);
		tablaEgresos.setModel(new DefaultTableModel(null,new String[] {"Detalle", "Importe"}) {
			
			public boolean isCellEditable(int row, int column) {
				return false;
		}});
		tablaEgresos.getColumnModel().getColumn(1).setCellRenderer(modeloderecha);
		
		txtSesiones = new JTextField();
		txtSesiones.setText("Sesiones");
		txtSesiones.setMargin(new Insets(2, 14, 2, 2));
		txtSesiones.setHorizontalAlignment(SwingConstants.CENTER);
		txtSesiones.setFont(new Font("Tahoma", Font.PLAIN, 16));
		txtSesiones.setEditable(false);
		txtSesiones.setColumns(10);
		txtSesiones.setBorder(null);
		txtSesiones.setBounds(67, 54, 81, 20);
		add(txtSesiones);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(29, 63, 471, 1);
		add(separator);
		
		JSeparator separator_16 = new JSeparator();
		separator_16.setOrientation(SwingConstants.VERTICAL);
		separator_16.setForeground(Color.LIGHT_GRAY);
		separator_16.setBounds(522, 501, 1, 181);
		add(separator_16);
		
		txtTurnos = new JTextField();
		txtTurnos.setText("Turnos");
		txtTurnos.setMargin(new Insets(2, 14, 2, 2));
		txtTurnos.setHorizontalAlignment(SwingConstants.CENTER);
		txtTurnos.setFont(new Font("Tahoma", Font.PLAIN, 16));
		txtTurnos.setEditable(false);
		txtTurnos.setColumns(10);
		txtTurnos.setBorder(null);
		txtTurnos.setBounds(559, 489, 81, 20);
		add(txtTurnos);
		
		JSeparator separator_2 = new JSeparator();
		separator_2.setBounds(522, 501, 471, 1);
		add(separator_2);
		
		JSeparator separator_15 = new JSeparator();
		separator_15.setOrientation(SwingConstants.VERTICAL);
		separator_15.setForeground(Color.LIGHT_GRAY);
		separator_15.setBounds(992, 501, 1, 181);
		add(separator_15);
		
		JSeparator separator_17 = new JSeparator();
		separator_17.setBounds(522, 681, 471, 1);
		add(separator_17);
		
		JLabel label = new JLabel("Total Turnos:  $");
		label.setVerticalAlignment(SwingConstants.TOP);
		label.setHorizontalAlignment(SwingConstants.RIGHT);
		label.setFont(new Font("Tahoma", Font.PLAIN, 12));
		label.setBounds(815, 698, 112, 26);
		add(label);
		
		textField = new JTextField();
		textField.setName("totalTurnos");
		textField.setHorizontalAlignment(SwingConstants.CENTER);
		textField.setFont(new Font("Tahoma", Font.PLAIN, 12));
		textField.setEditable(false);
		textField.setColumns(10);
		textField.setBounds(915, 693, 78, 26);
		add(textField);
		
		JScrollPane scrollPane_3 = new JScrollPane();
		scrollPane_3.setName("sesiones");
		scrollPane_3.setBounds(45, 143, 436, 521);
		add(scrollPane_3);
		
		tablaSesiones = new JTable();
		tablaSesiones.setModel(new DefaultTableModel(
			matrizSesiones,
			new String[] {
				"Fecha", "Usuario", "Hora inicio", "Hora fin", "Caja inicial", "Caja final"
			}
		) {
			Class[] columnTypes = new Class[] {
				String.class, String.class, String.class, String.class, String.class, String.class
			};
			public Class getColumnClass(int columnIndex) {
				return columnTypes[columnIndex];
			}
			;
			public boolean isCellEditable(int row, int column) {
				return false;
			}
		});
		tablaSesiones.getColumnModel().getColumn(0).setResizable(false);
		tablaSesiones.getColumnModel().getColumn(0).setMinWidth(65);
		tablaSesiones.getColumnModel().getColumn(1).setResizable(false);
		tablaSesiones.getColumnModel().getColumn(1).setMinWidth(120);
		tablaSesiones.getColumnModel().getColumn(2).setResizable(false);
		tablaSesiones.getColumnModel().getColumn(2).setMinWidth(60);
		tablaSesiones.getColumnModel().getColumn(3).setResizable(false);
		tablaSesiones.getColumnModel().getColumn(3).setMinWidth(55);
		tablaSesiones.getColumnModel().getColumn(4).setResizable(false);
		tablaSesiones.getColumnModel().getColumn(4).setMinWidth(60);
		tablaSesiones.getColumnModel().getColumn(5).setResizable(false);
		tablaSesiones.getColumnModel().getColumn(5).setMinWidth(55);
		tablaSesiones.getColumnModel().getColumn(0).setCellRenderer(modelocentrar);
		tablaSesiones.getColumnModel().getColumn(2).setCellRenderer(modelocentrar);
		tablaSesiones.getColumnModel().getColumn(3).setCellRenderer(modelocentrar);
		tablaSesiones.getColumnModel().getColumn(4).setCellRenderer(modeloderecha);
		tablaSesiones.getColumnModel().getColumn(5).setCellRenderer(modeloderecha);
		tablaSesiones.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tablaSesiones.addMouseListener(new MouseListener(){

			public void mouseClicked(MouseEvent arg0) {
			 int filaSeleccionada = tablaSesiones.getSelectedRow();
			 if(filaSeleccionada>=0){
				ControlSesion.getInstance().mostrarInformacionSesion(filaSeleccionada);
			 }
				
			}
			public void mouseEntered(MouseEvent arg0) {}
			public void mouseExited(MouseEvent arg0) {}
			public void mousePressed(MouseEvent arg0) {}
			public void mouseReleased(MouseEvent arg0) {}
		});
		scrollPane_3.setViewportView(tablaSesiones);
		
		JSeparator separator_7 = new JSeparator();
		separator_7.setForeground(Color.LIGHT_GRAY);
		separator_7.setBounds(639, 63, 354, 1);
		add(separator_7);
		
		JLabel label_1 = new JLabel("Fecha:");
		label_1.setHorizontalAlignment(SwingConstants.LEFT);
		label_1.setFont(new Font("Tahoma", Font.PLAIN, 12));
		label_1.setBounds(45, 97, 87, 26);
		add(label_1);
		
		dateChooser = new JDateChooser();
		dateChooser.setBounds(88, 97, 100, 26);
		add(dateChooser);
		
		JLabel lblUsuario = new JLabel("Usuario:");
		lblUsuario.setHorizontalAlignment(SwingConstants.LEFT);
		lblUsuario.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblUsuario.setBounds(217, 97, 46, 26);
		add(lblUsuario);
		
		comboUsuarios = new JComboBox<String>( new DefaultComboBoxModel<String>(listaUsuarios));
		comboUsuarios.setBounds(266, 98, 106, 26);
		add(comboUsuarios);
		
		JButton botonBuscar = new JButton("Buscar");
		botonBuscar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				ControlSesion.getInstance().buscarSesiones(dateChooser.getDate(),comboUsuarios.getSelectedIndex());
			}
		});
		botonBuscar.setForeground(Color.BLACK);
		botonBuscar.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonBuscar.setBorder(UIManager.getBorder("Button.border"));
		botonBuscar.setBackground(SystemColor.activeCaptionBorder);
		botonBuscar.setBounds(413, 97, 67, 26);
		add(botonBuscar);
		tablaEgresos.getColumnModel().getColumn(0).setPreferredWidth(150);
		tablaEgresos.getColumnModel().getColumn(1).setPreferredWidth(30);
		
	}
}